import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite';
import Components from 'unplugin-vue-components/vite';
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons';
import eslintPlugin from 'vite-plugin-eslint';
import { resolve } from 'path'; // 需要npm i - D @types/node

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    eslintPlugin({
      include: ['src/**/*.ts', 'src/**/*.vue', 'src/*.ts', 'src/*.vue'],
    }),
    // 自动导入vue、vue-router
    AutoImport({
      imports: ['vue', 'vue-router'],
      dts: 'src/auto-imports.d.ts',
    }),
    // 自动导入组件
    Components({
      dirs: ['src/components'], // 默认是 ['src/components']
      dts: 'src/components.d.ts', // 默认是 'src/components.d.ts'
    }),
    // svg图标
    createSvgIconsPlugin({
      iconDirs: [resolve(__dirname, 'src/assets/svg')],
      symbolId: 'icon-[name]'
    })
  ],
  resolve: {
    alias: {
      '@': resolve(__dirname, 'src'),
    },
    extensions: ['.js', '.ts', '.jsx', '.tsx', '.json', '.vue'],
  },
  css: {
    preprocessorOptions: {
      scss: {
        // 全局引入scss
        additionalData: `@import "@/styles/base.scss";`,
      },
    }
  },
  build: {
    target: 'modules', // 构建目标
    outDir: 'vite', // dist输出路径
    assetsDir: 'assets', // assets 静态资源存放路径
    sourcemap: false, // false 是否生成source map文件
  },
  base: './', // 生产环境下的公共路径
  define: {
    'process.env': {}
  },
  server: {
    // open: true, // 启动服务后是否打开浏览器
    // host: '', // 服务端IP地址
    // port: 8080, // 服务端口
    // https: false, // 是否启用https
    // hotOnly: false, // 是否开启热更新
    proxy: {
      '/api': {
        target: 'http://localhost:3000', // 代理地址，这里设置的地址会代替axios中设置的baseURL
        changeOrigin: true, // 如果接口跨域，需要进行这个参数配置
        rewrite: (path) => path.replace(/^\/api/, ''),
      }
    }
  }
})
